/**
 *  debug.h
 *  AwkwardCubed - Sys
 *
 *  Date: 20/08/2013
 *
 *  Language: C++
 *
 *  @author Carl mcCaffrey
 *
 */
#ifndef DEBUG_H
#define DEBUG_H

#include <fstream>

typedef enum _ErrorType{
	DBG_ERROR_PRIORITY_LOW,			// Doesnt effect game performance
	DBG_ERROR_PRIORITY_MEDIUM,		// Small effect on game performance
	DBG_ERROR_PRIORITY_HIGH,		// Large effect on game performance
	DBG_ERROR_PRIORITY_SEVERE		// Game cannot run past this point
} ErrorType;

class Debug
{
	private:
		std::ofstream file;

	public:
		static inline Debug& GetInstance(void){
			static Debug instance;
			return instance;
		}

		void Init(const char* filename);
		void Shutdown(void);

		void Print(char* string, ...);
		void PrintErr(ErrorType error, char* string, ...);
		int MsgBox(const char* title, const char* text, unsigned int type);
};

#endif // DEBUG_H